#ifndef DIFFSECONDSTEST_H
#define DIFFSECONDSTEST_H

#include <QObject>
#include <QTest>
#include <QDate>
#include <QTime>
#include <QDateTime>
#include <QMap>
#include <QVector>
#include <QFile>
#include <QTextStream>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDir>
#include <QSet>
#include <QDebug>

#include "../../compare/cholidayset.h"
#include "../../compare/cworktime.h"

class DiffSecondsTest : public QObject
{
    Q_OBJECT

public:
    DiffSecondsTest() = default;
    ~DiffSecondsTest() = default;

private slots:
    void initTestCase(); // 测试用例初始化
    void cleanupTestCase(); // 测试用例清理
    void testDiffSeconds(); // 主要测试函数

private:
    // 路径获取方法
    QString getTestDataBasePath();
    QString getTestResultBasePath();

    // 加载全局测试数据
    bool loadGlobalTestData(const QString& folderPath);

    // 解析JSON文件
    QJsonArray readJsonArray(const QString& filePath);
    QJsonObject readJsonObject(const QString& filePath);

    // 创建目录和文件（递归）
    void createFileRecursion(const QString& fileName);

    // 解析时间字符串
    QTime parseTime(const QString& timeStr);

    // 写入结果到文件
    void writeResultToFile(const QString& fileName, const QVector<int>& results);

    // 测试数据路径
    QString testDataFileBase;
    QString testResultFileBase;

    // 全局数据存储
    QSet<QDate> mSetHoliday;
    QHash<int, QVector<CWorkTime>> mHashNormalDayToWorkTime;
    QVector<QPair<QDate, QVector<CWorkTime>>> dateWorkTimeList;
};

#endif // DIFFSECONDSTEST_H
